<template>
    <div class="cart_page">
        <table>
            <thead>
                <tr>
                    <th style="width: 8%">
                        <i
                            :class="
                                checkAll
                                    ? 'iconfont icon-yduifuxuankuangxuanzhong'
                                    : 'iconfont icon-yduifuxuankuang'
                            "
                            @click="checkAllclick"
                        ></i>
                        <!-- <i class="iconfont icon-yduifuxuankuangxuanzhong"></i> -->
                    </th>
                    <th style="width: 30%">礼品信息</th>
                    <th>兑换分数</th>
                    <th>数量</th>
                    <th>小计 (鸡腿)</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="(item, index) in cartArr" :key="index">
                    <td>
                        <i
                            :class="
                                checkList[index]
                                    ? 'iconfont icon-yduifuxuankuangxuanzhong'
                                    : 'iconfont icon-yduifuxuankuang'
                            "
                            @click="checkclick(index)"
                        ></i>
                        <!-- <i class="iconfont icon-yduifuxuankuangxuanzhong"></i> -->
                    </td>
                    <td>
                        <section>
                            <img width="84" :src="imgBaseUrl + item.coverImg" alt="列表图片" />
                            <div class="info">
                                <h5>{{ item.title }}</h5>
                                <p>{{ item.versionDescription }}</p>
                            </div>
                        </section>
                    </td>
                    <td>{{ item.coin }}鸡腿</td>
                    <td>
                        <div class="step">
                            <span @click="changeNum(-1, index, item)">-</span>
                            <input type="text" disabled v-model="item.total" />
                            <span @click="changeNum(1, index, item)">+</span>
                        </div>
                    </td>
                    <td>{{ item.coin * item.total }}鸡腿</td>
                    <td>
                        <span class="del" @click="removeshop(item.id)">删除</span>
                    </td>
                </tr>
            </tbody>
        </table>
        <div class="total">
            总计：
            <span>{{ totalprice }}鸡腿</span>
        </div>
        <div class="submit">提交</div>
    </div>
</template>
<script>
import { shopCartAPI, addToCartAPI, deleteCartAPI, userInfoAPI } from '@/request/api';
import { mapActions } from 'vuex';

export default {
    inject: ['adds'],
    data() {
        return {
            stepNum: 1,
            // 全选
            checkAll: false,
            // 单选按钮数组
            checkList: [],
            cartArr: [],
        };
    },
    computed: {
        totalprice() {
            let total = this.cartArr.reduce((pre, cur, index) => {
                return pre + (this.checkList[index] ? cur.coin * cur.total : 0);
            }, 0);
            return total;
        },
    },
    async created() {
        // let res = await shopCartAPI();
        // if (!res) return;
        // this.cartArr = res.data;
        // this.checkList = res.data.map(item => (item = false));
        this.reload();
        // console.log(this.checkList);
    },
    methods: {
        ...mapActions({
            asyncChangeIsShowToast: 'showtoast/asyncChangeIsShowToast',
        }),
        async reload() {
            let res = await shopCartAPI();
            if (!res) return;
            this.cartArr = res.data;
            this.checkList = res.data.map(item => (item = false));
        },
        //全选
        checkAllclick() {
            this.checkAll = !this.checkAll;
            this.checkList = this.checkList.map(item => (item = this.checkAll));
        },
        //反选
        checkclick(index) {
            this.$set(this.checkList, index, !this.checkList[index]);
            // console.log(!this.checkList[index]);
            // console.log(this.checkList.filter(item => (item = true)));
            let list = this.checkList.filter(item => {
                return item == true;
            });
            console.log(list);

            if (list.length == this.checkList.length) {
                this.checkAll = true;
            } else {
                this.checkAll = false;
            }
        },
        //b步进器
        async changeNum(val, index, item) {
            if (item.total <= 0 && val == -1) return;
            let res = await addToCartAPI({
                productId: item.id,
                total: (this.cartArr[index].total += val),
            });
        },
        //删除商品
        async removeshop(id, index) {
            let res = await deleteCartAPI({
                id: id,
            });
            this.asyncChangeIsShowToast({
                msg: '删除成功',
                type: 'success',
            });
            // this.$emit('changekey');
            // this.$router.go(0);
            this.reload();
            // let token = localStorage.getItem('x-auth-token');
            // location.reload(true);
            console.log(this.adds);
            this.adds.keyVal++;
            // if (!token) return;

            // let cres = userInfoAPI({
            //     'x-auth-token': token,
            // });
        },
    },
};
</script>
<style lang="less" scoped>
.cart_page {
    background: #fff;
    table {
        width: 100%;
        border: 1px solid #e6e6e6;
        box-sizing: border-box;
        color: #666;
        border-collapse: collapse;
        font-size: 14px;
        thead {
            background: #f2f2f2;
            th {
                padding: 19px 0;
                .iconfont {
                    cursor: pointer;
                }
                .icon-yduifuxuankuangxuanzhong {
                    color: #0a328e;
                }
            }
        }
        tbody {
            tr {
                td {
                    vertical-align: middle;
                    text-align: center;
                    padding: 19px 0;
                    table-layout: fixed; // td的宽度固定，不随内容变化
                    .iconfont {
                        cursor: pointer;
                    }
                    .icon-yduifuxuankuangxuanzhong {
                        color: #0a328e;
                    }
                    section {
                        padding-left: 20px;
                        display: flex;
                        box-sizing: border-box;
                        img {
                            margin-right: 12px;
                        }
                        .info {
                            padding-top: 20px;
                            flex: 1;
                            overflow: hidden;
                            box-sizing: border-box;
                            text-align: left;
                            h5 {
                                overflow: hidden;
                                color: #333;
                                font-size: 18px;
                                white-space: nowrap;
                                text-overflow: ellipsis;
                                margin-bottom: 20px;
                            }
                            p {
                                color: #666;
                                overflow: hidden;
                                white-space: nowrap;
                                text-overflow: ellipsis;
                            }
                        }
                    }
                    .step {
                        width: 106px;
                        height: 32px;
                        margin: auto;
                        span {
                            float: left;
                            width: 30px;
                            height: 32px;
                            display: block;
                            border: solid 1px #d1d1d1;
                            font-size: 20px;
                            box-sizing: border-box;
                            font-weight: normal;
                            font-stretch: normal;
                            line-height: 30px;
                            letter-spacing: 0px;
                            color: #999999;
                            text-align: center;
                            cursor: pointer;
                            background: #fff;
                        }
                        input {
                            box-sizing: border-box;
                            width: 46px;
                            height: 32px;
                            float: left;
                            text-align: center;
                            font-size: 14px;
                            line-height: 23px;
                            letter-spacing: 0px;
                            color: #666666;
                            border: 0;
                            border-top: 1px solid #d1d1d1;
                            border-bottom: 1px solid #d1d1d1;
                            background: #fff;
                        }
                    }
                    .del {
                        border: 1px solid #ececec;
                        border-radius: 4px;
                        padding: 5px 10px;
                        cursor: pointer;
                        &:hover {
                            color: #fff;
                            background: #0a328e;
                        }
                    }
                }
            }
        }
    }
    .total {
        padding: 30px 0;
        text-align: right;
        font-size: 22px;
        span {
            font-weight: bold;
            color: #fd604d;
        }
    }
    .submit {
        width: 175px;
        height: 40px;
        text-align: center;
        line-height: 40px;
        font-family: SourceHanSansSC-Light;
        font-size: 18px;
        font-weight: normal;
        font-stretch: normal;
        letter-spacing: 0px;
        color: #ffffff;
        cursor: pointer;
        background-color: #0a328e;
        float: right;
    }
}
</style>
